home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / comm / fido / AFManager.lha / AFM / AFManager.spot < prev    next >
Text File  |  1997-03-02  |  16KB  |  574 lines

  1. /*
  2.  * AREAFIX MANAGER © 1993 PSR Software, based on AreaFixMan v3.0
  3.  * $VER: AFManager 1.4 (01.03.96)
  4.  *
  5.  * PROGRAM DESRIPTION
  6.  *
  7.  *   Makes area fixing much simpler, for Spot users only.
  8.  *
  9.  * AUTHOR(S)
  10.  *
  11.  *   Original AFM v3.0 by Paul Ruane of PSR Software.
  12.  *
  13.  *        2:252/149.3  @fidonet
  14.  *        2:253/516.12 @fidonet
  15.  *        39:135/14.3  @amiganet
  16.  *        39:135/13.12 @amiganet
  17.  *
  18.  *   All modifications from AFM 3.0 by Sylvain Bourcier, Daddy B@@ze...
  19.  *
  20.  *        1:167/151.66 @fidonet
  21.  *
  22.  * DISCLAIMER
  23.  *
  24.  *   Freeware. Should not have been altered or modified without permission,
  25.  *   but... This version has not been approved for release by PSR.
  26.  *
  27.  * PROGRAM HISTORY
  28.  *
  29.  *  v1.4 -Added %QUERY to options requester.
  30.  *       -Slightly better areaname checks, but you can still screw up.
  31.  *       -Erase action will prompt instead of erasing last entry.
  32.  *       -No longer accepts same attach/detach action more than once.
  33.  *       -Added manual detach, to detach from areas that have a very low
  34.  *        mailflow and from which you might not yet have received anything.
  35.  *
  36.  *  v1.3 -Removed signature in AFM-Written messages, some areafix programs
  37.  *        choke on it - and on tearlines, very lame.
  38.  *
  39.  *  v1.2 -Added check to remove leading +/- from area names.
  40.  *       -Added check to remove leading % when entering special option.
  41.  *       -Added request to proceed IF Length(areaname)>30.
  42.  *       -Fixed deleterequest in openprefs - quotes, always one missing ;)
  43.  *       -Special %options and pswd options asked in same requester now.
  44.  *       -No longer writes a message if no attach/detach and no option.
  45.  *
  46.  *  v1.1 -Didn't Upper the right variable in PROCESSAREAFILE. Fixed.
  47.  *
  48.  *  v1.0 -Improved area selection, can be started from anywhere!
  49.  *       -Prefs requesters will contain value of last prefs entry.
  50.  *       -If prefs file is invalid, you don't have to quit and restart.
  51.  *       -Add areas from message now works!
  52.  *       -Add areas from an external file!
  53.  *       -Announce asked at time of detach.
  54.  *       -Some more crap removed, fixed or improved.
  55.  */
  56.  
  57. /*---------------------------------------------------------------------------
  58.                   You may edit the following to your likes
  59. ---------------------------------------------------------------------------*/
  60.  
  61. DETACH_SUBJECT="So Long and thanks for all the fish..."
  62. DETACH_FILE="Rexx:Spot/AFM/AFManager.announce"
  63. PREF_FILE="Areafixman.prefs"
  64. EDITOR="Rexx:StartCed.rexx"
  65. CHAR="~"
  66. CHARNAME="Tilde"
  67. CURRENTFORMAT="FORMAT 2.6"
  68. MAXACTION=20
  69.  
  70. FILE="ENV:"||PREF_FILE
  71. FILESAVE="ENVARC:"||PREF_FILE
  72. TEMP="T:Spot.AFManager.temp"
  73. TEMP2="T:Spot.AFManager.temp2"
  74. LF="0d"x
  75. Tmp=0
  76. Fromnumber=0
  77. Fromarea="NONE"
  78. message=""
  79. helpmsg.=""
  80. helpitems=3
  81. helpmsg.1="Messages to AreaFix should be in your MATRIX/NETMAIL areas."||LF
  82. helpmsg.1=helpmsg.1||"If you send it in any other area, other people may see your"||LF
  83. helpmsg.1=helpmsg.1||"password and assume your identity."
  84. helpmsg.2="If you started AFM from a message, selecting MESSAGE will"||LF
  85. helpmsg.2=helpmsg.2||"bring up an editor with it's content.  You can then put the"||LF
  86. helpmsg.2=helpmsg.2||"character '"||CHARNAME||"' in front of areanames you wish to attach."||LF
  87. helpmsg.2=helpmsg.2||"The FILE option will do the same with a file of your choice."||LF||LF
  88. helpmsg.2=helpmsg.2||"¹AFM will retrieve only ONE area name per line."||LF
  89. helpmsg.2=helpmsg.2||"²Remember, you must use the REALNAMES for Areafix to work."
  90. helpmsg.3="AFM can send a predefined message in the area"||LF
  91. helpmsg.3=helpmsg.3||"you are detaching from. The current message is:"||LF
  92. helpmsg.3=helpmsg.3||DETACH_FILE
  93. If ~show('ports','SPOT') Then Do
  94. Say '+++ Error! You must be in SPOT to use this script.'
  95. Exit 10
  96. End
  97. Address SPOT
  98. OPTIONS RESULTS
  99. SIGNAL ON BREAK_C
  100. SIGNAL ON SYNTAX
  101. SIGNAL ON NOVALUE
  102. SIGNAL ON FAILURE
  103. 'isiconified'
  104. If RC=0 Then 'uniconify'
  105. Tmp=verifyprefsfile()
  106. If Tmp>9 Then Exit 10
  107. If Tmp>0 Then Exit
  108. Call Close('PREFS')
  109. 'ismessages'
  110. If RC=0 Then Do
  111. 'getnummsgs'
  112. If RESULT>0 Then Do
  113. 'getmessagenum'
  114. Fromnumber=RESULT
  115. 'getareaname'
  116. Fromarea=RESULT
  117. End
  118. End
  119. 'isarealist'
  120. If ~(RC=0) Then 'arealist'
  121. Do Forever
  122. 'requestarea' 'TITLE "Areafix to which area?"'
  123. If RC>0 Then Exit
  124. 'gotoarea' RESULT
  125. If RC=0 Then Leave
  126. End
  127. 'getareaname'
  128. REAL_NAME=RESULT
  129. If ~(left(REAL_NAME,3)='NET') Then Do Forever
  130. 'gotomatrixarea'
  131. If RC=0 Then Do
  132. 'getareaname'
  133. MATRIXNAME=RESULT
  134. MATRIXNAME2='_NET('substr(RESULT,5)')'
  135. 'gotoarea' REAL_NAME
  136. 'requestresponse PROMPT "'REAL_NAME' is not a NETMAIL area!'LF'Do you really wish to Areafix to a public echo?" GADGETS "'MATRIXNAME2'|_Continue|_Help|_QUIT" CENTER'
  137. If RC=0 Then Exit
  138. If RC=1 Then Do
  139. REAL_NAME=MATRIXNAME
  140. 'gotoarea' MATRIXNAME
  141. Leave
  142. End
  143. If RC=2 Then Leave
  144. If RC=3 Then Call help(1)
  145. End
  146. Else Do
  147. 'requestresponse PROMPT "'REAL_NAME' is not a NETMAIL area!'LF'Do you really wish to Areafix to a public echo?" GADGETS "_Continue|_Help|_QUIT" CENTER'
  148. If RC=0 Then Exit
  149. If RC=1 Then Leave
  150. If RC=2 Then Call help(1)
  151. End
  152. End
  153. Tmp=verifyprefsfile()
  154. If Tmp>9 Then Exit 10
  155. If Tmp>0 Then Exit
  156. DEFAULTBOSS='1:167/151'
  157. DEFAULTPASS='yourpassword'
  158. Do Until EOF('PREFS')
  159. DUMMY='dummy'
  160. AREA=Strip(ReadLn('PREFS'),'L')
  161. ADDRESS=Strip(ReadLn('PREFS'),'L')
  162. PASS=Strip(ReadLn('PREFS'),'L')
  163. AREAFIX=Strip(ReadLn('PREFS'),'L')
  164. If Length(PASS)>0 Then DEFAULTPASS=PASS
  165. If Length(ADDRESS)>0 Then DEFAULTBOSS=ADDRESS
  166. COMMENT=Strip(ReadLn('PREFS'),'L')
  167. If Length(COMMENT)=0 Then Do
  168. COMMENT='Options'
  169. End
  170. Else Do
  171. ANNOUNCE=Strip(ReadLn('PREFS'),'L')
  172. If Length(ANNOUNCE)=0 Then Do
  173. ANNOUNCE='No Announce'
  174. DUMMY=''
  175. End
  176. Else Do
  177. Do until Length(DUMMY)=0
  178. DUMMY=ReadLn('PREFS')
  179. End
  180. End
  181. End
  182. If AREA=REAL_NAME Then Do
  183. Call Close('PREFS')
  184. Signal DOAREAFIX
  185. End
  186. End
  187. Call Close('PREFS')
  188. 'requeststring TITLE "Boss" PROMPT "Enter the address of your boss'LF'for the area 'REAL_NAME'." DEFAULT 'DEFAULTBOSS' CENTER'
  189. If RC>0 Then Exit
  190. ADDRESS=RESULT
  191. 'requeststring TITLE "Password" PROMPT "Enter your password for this boss." DEFAULT 'DEFAULTPASS' CENTER'
  192. If RC>0 Then Exit
  193. PASS=RESULT
  194. 'requeststring TITLE "AreaFix" PROMPT "Enter name of the Areafix handler'LF'for this boss or leave unaltered." DEFAULT "Areafix" CENTER'
  195. If RC>0 Then Exit
  196. AREAFIX=RESULT
  197. 'requeststring TITLE "Comment" PROMPT "Enter optional comment/reminder for this area." CENTER'
  198. If RC>0 Then Exit
  199. COMMENT=RESULT
  200. If Length(COMMENT)=0 Then COMMENT="Options"
  201. ANNOUNCE='AnnounceDummy'
  202. 'requestresponse PROMPT "You have changed the prefs." GADGETS "_Save|_Use|_QUIT" CENTER'
  203. If RC=0 Then Exit
  204. saveit=RC
  205. If ~Open('PREFS',FILE,'a') Then Do
  206. 'requestnotify PROMPT "FATAL ERROR!'LF'Could not re-open prefs file ('FILE')"'
  207. Exit 10
  208. End
  209. Call WriteLn('PREFS',REAL_NAME)
  210. Call WriteLn('PREFS',ADDRESS)
  211. Call WriteLn('PREFS',PASS)
  212. Call WriteLn('PREFS',AREAFIX)
  213. Call WriteLn('PREFS',COMMENT)
  214. Call WriteLn('PREFS',ANNOUNCE)
  215. Call WriteLn('PREFS','')
  216. Call Close('PREFS')
  217. If saveit=1 Then Address COMMAND 'Copy 'FILE FILESAVE
  218. DOAREAFIX:
  219. COUNT=0
  220. ENTRY.=''
  221. Address COMMAND
  222. 'Delete >NIL: 'TEMP
  223. 'Delete >NIL: 'TEMP2
  224. Address SPOT
  225. FIXAREA:
  226. Do Forever
  227. TEXT=''
  228. AFMCommand=0
  229. 'arealist'
  230. If COUNT>0 Then Do c=1 To (COUNT-1)
  231. If LENGTH(ENTRY.c)>30 Then TEXT2=Left(ENTRY.c,30)'...'
  232. Else TEXT2=ENTRY.c
  233. If c<10 Then TEXT=TEXT||'(0'c')   '||TEXT2||LF
  234. Else TEXT=TEXT||'('c')   '||TEXT2||LF
  235. End
  236. If LENGTH(ENTRY.COUNT)>30 Then TEXT2=Left(ENTRY.COUNT,30)'...'
  237. Else TEXT2=ENTRY.c
  238. If COUNT<10 Then TEXT=TEXT||'(0'COUNT')   '||TEXT2
  239. Else TEXT=TEXT||'('COUNT')   '||TEXT2
  240. If COUNT<MAXACTION Then Do
  241. If COUNT>0 Then Do
  242. 'requestresponse TITLE "'COMMENT'" PROMPT "'TEXT'" GADGETS "_Attach|_Detach|_Erase Action|_Done|_Quit"'
  243. AFMCommand=RC
  244. End
  245. Else Do
  246. 'requestresponse TITLE "'COMMENT'" PROMPT "(no command)" GADGETS "_Attach|_Detach|_Done|_Quit"'
  247. AFMCommand=RC
  248. If AFMCommand=3 Then AFMCommand=4
  249. End
  250. End
  251. Else Do
  252. 'requestresponse TITLE "'COMMENT'" PROMPT "'TEXT'" GADGETS "_Erase Action|_DONE|_QUIT"'
  253. AFMCommand=RC
  254. If AFMCommand>0 Then AFMCommand=AFMCommand+2
  255. End
  256. Select
  257. When AFMCommand=0 Then Exit
  258. When AFMCommand=1 Then Call attachareas()
  259. When AFMCommand=2 Then Call detachareas()
  260. When AFMCommand=4 Then Call wearedone()
  261. When AFMCommand=3 Then Call eraseaction()
  262. End
  263. End
  264. Exit
  265. verifyprefsfile: PROCEDURE EXPOSE FILE FILESAVE PREFS CURRENTFORMAT LF
  266. If ~Open('PREFS',FILE,'r') Then Do
  267. If ~Open('PREFS',FILE,'w') Then Do
  268. 'requestnotify TITLE "Error" PROMPT "FATAL ERROR!'LF'Could not create prefs file ('FILE')"'
  269. Return '10'
  270. End
  271. Call WriteLn('PREFS','FORMAT 2.6')
  272. Call Close('PREFS')
  273. 'requestnotify PROMPT "A new prefs file has been created."'
  274. If ~Open('PREFS',FILE,'r') Then Do
  275. 'requestnotify TITLE "Error" PROMPT "FATAL ERROR!'LF'Could not re-open prefs file ('FILE')"'
  276. Return '10'
  277. End
  278. End
  279. FORMAT=ReadLn('PREFS')
  280. If ~(FORMAT=CURRENTFORMAT) Then Do
  281. message = 'PREFS file is not compatible with this version of AFM.'||LF
  282. message = message||'Delete the prefs files and create a new one?'
  283. 'requestresponse TITLE "Delete?" PROMPT "'message'" GADGETS "_Delete|_QUIT" CENTER'
  284. If RC=1 Then Do
  285. Call Close('PREFS')
  286. Address COMMAND
  287. 'Delete' ">NIL:" FILE
  288. 'Delete' ">NIL:" FILESAVE
  289. Address SPOT
  290. LocalResult=verifyprefsfile()
  291. Return LocalResult
  292. End
  293. Return '5'
  294. End
  295. Return '0'
  296. attachareas:
  297. Do Forever
  298. 'requestresponse TITLE "Attach Method" PROMPT "You may select areas in one of 3 ways" GADGETS "M_anually|_Message|_File|_Help|_Cancel" CENTER'
  299. If RC=0 Then Return
  300. ATTACHCommand=RC
  301. If ATTACHCommand=4 Then Call help(2)
  302. If ATTACHCommand=1 Then Do
  303. Do Forever
  304. 'requeststring TITLE "Manual attach" PROMPT "Enter area name to attach,'LF'Cancel to End." CENTER'
  305. If RC>0 Then Leave
  306. AREANAM=RESULT
  307. Tmp=checkareaname()
  308. If Tmp>0 Then Leave
  309. Dup=0
  310. Do c=1 To COUNT
  311. If ENTRY.c='+'AREANAM Then Dup=1
  312. End
  313. If Dup=0 Then Do
  314. COUNT=COUNT+1
  315. ENTRY.COUNT='+'||AREANAM
  316. End
  317. If COUNT=MAXACTION Then Return
  318. End
  319. Return
  320. End
  321. If ATTACHCommand=2 Then Do
  322. If Fromnumber=0 Then 'requestnotify PROMPT "You did not Call AFM from a message."'
  323. Else Do
  324. 'gotoarea' Fromarea
  325. If RC>0 Then Do
  326. 'requestnotify TITLE "Error" PROMPT "Unable to reach message#'Fromnumber' in area 'Fromarea'."'
  327. Return
  328. End
  329. 'messages'
  330. 'gotomessage' Fromnumber
  331. If RC>0 Then Do
  332. 'requestnotify TITLE "Error" PROMPT "Unable to reach message#'Fromnumber' in area 'Fromarea'."'
  333. Return
  334. End
  335. 'saveascii TO "'TEMP2'" OVERWRITE NOHEADER NOTEARLINE NOORIGIN NOKLUDGES NOREFLOW'
  336. If RC>0 Then Do
  337. 'requestnotify TITLE "Error" PROMPT "Unable to save message to 'TEMP2'"'
  338. Return
  339. End
  340. Call processareafile()
  341. Return
  342. End
  343. End
  344. If ATTACHCommand=3 Then Do
  345. 'requestfile TITLE "Select textfile"'
  346. If RC=0 Then Do
  347. Address COMMAND 'Copy 'RESULT TEMP2
  348. If RC>0 Then Do
  349. 'requestnotify TITLE "Error" PROMPT "Unable to copy file to 'TEMP2'"'
  350. Return
  351. End
  352. Call processareafile()
  353. Return
  354. End
  355. End
  356. End
  357. Return
  358. processareafile:
  359. 'WB2Front'
  360. Address COMMAND '"'EDITOR'"' '"'TEMP2'"'
  361. 'Spot2Front'
  362. If Open('ATTACHFILE',TEMP2,'r') Then Do
  363. Do While ~EOF('ATTACHFILE') & (COUNT<MAXACTION)
  364. ALINE=ReadLn('ATTACHFILE')
  365. P=Pos(CHAR,ALINE)
  366. If P>0 Then Do
  367. ALINE=Right(ALINE,Length(ALINE)-P)
  368. AREANAM=Word(ALINE,1)
  369. Tmp=checkareaname()
  370. If Tmp=0 Then Do
  371. Dup=0
  372. Do c=1 To COUNT
  373. If ENTRY.c='+'AREANAM Then Dup=1
  374. End
  375. If Dup=0 Then Do
  376. COUNT=COUNT+1
  377. ENTRY.COUNT='+'||AREANAM
  378. End
  379. End
  380. End
  381. End
  382. Call Close('ATTACHFILE')
  383. End
  384. Else 'requestnotify TITLE "Error" PROMPT "Unable to ReOpen file 'TEMP2'"'
  385. Return
  386. detachareas:
  387. 'requestresponse TITLE "Detach Method" PROMPT "You may select areas in one of 2 ways" GADGETS "_AreaList|_Manually|_Cancel" CENTER'
  388. If RC=0 Then Return
  389. DETACHCommand=RC
  390. If DETACHCommand=1 Then Do
  391. Do Forever
  392. 'requestarea TITLE "Select area to detach" ALL'
  393. If RC>0 Then Return
  394. 'gotoarea' RESULT
  395. 'getareaname'
  396. AREANAM=RESULT
  397. If (left(AREANAM,3)='NET') Then Do
  398. 'requestresponse TITLE "Hmmmm..." PROMPT "Are you sure you want'LF'to detach a NETMAIL area?" GADGETS "_No!|_Yes" CENTER'
  399. If RC=0 Then Leave
  400. End
  401. Else Leave
  402. End
  403. Dup=0
  404. Do c=1 To COUNT
  405. If ENTRY.c='-'AREANAM Then Dup=1
  406. End
  407. If Dup=0 Then Do Forever
  408. 'requestresponse TITLE "Announce" PROMPT "Announce your departure?" GADGETS "_Yes|_No|_Help|_Cancel" CENTER'
  409. If RC=0 Then Leave
  410. If RC=3 Then Call help(3)
  411. Else Do
  412. ANNOUNCE=RC
  413. COUNT=COUNT+1
  414. ENTRY.COUNT='-'||Upper(AREANAM)
  415. If ANNOUNCE=1 Then Do
  416. If Exists(DETACH_FILE) Then Do
  417. 'gotoarea' AREANAM
  418. 'messages'
  419. 'write TO "ALL" SUBJECT "'DETACH_SUBJECT'" ORIGIN "AFManager v1.1" FILE "'DETACH_FILE'"'
  420. If RC>0 Then 'requestnotify TITLE "Error" PROMPT "Unable to write farewell message."'
  421. End
  422. Else 'requestnotify TITLE "Error" PROMPT "Unable to open announce file:'LF||DETACH_FILE'."'
  423. End
  424. Leave
  425. End
  426. End
  427. Return
  428. End
  429. If DETACHCommand=2 Then Do
  430. Do Forever
  431. 'requeststring TITLE "Manual detach" PROMPT "Enter area name to detach,'LF'Cancel to End." CENTER'
  432. If RC>0 Then Leave
  433. AREANAM=RESULT
  434. Tmp=checkareaname()
  435. If Tmp>0 Then Leave
  436. Dup=0
  437. Do c=1 To COUNT
  438. If ENTRY.c='-'AREANAM Then Dup=1
  439. End
  440. If Dup=0 Then Do
  441. COUNT=COUNT+1
  442. ENTRY.COUNT='-'||AREANAM
  443. If COUNT=MAXACTION Then Return
  444. End
  445. End
  446. Return
  447. End
  448. Return
  449. checkareaname: PROCEDURE EXPOSE AREANAM LF
  450. BADCHAR=' @^,;:="'||"'"||"`"
  451. AREANAM=Compress(AREANAM,BADCHAR)
  452. AREANAM=Strip(Strip(AREANAM,'L','+'),'L','-')
  453. AREANAM=Upper(Strip(AREANAM,'B','.'))
  454. If Length(AREANAM)=0 Then Return '1'
  455. If Length(AREANAM)>30 Then Do
  456. message = 'LongName: '||Left(AREANAM,30)||'...'||LF||LF
  457. message = message||'Some systems limit the length of Areanames'||LF
  458. message = message||'to 30 chars or so. Proceed with operation?'
  459. 'requestresponse TITLE "LongName" PROMPT "'message'" GADGETS "_Proceed|_Cancel" CENTER'
  460. If RC=0 Then Return '1'
  461. End
  462. Return '0'
  463. eraseaction:
  464. Do Forever
  465. TEXT='Enter action number to erase:'||LF||LF
  466. If COUNT>0 Then Do c=1 To (COUNT-1)
  467. If LENGTH(ENTRY.c)>30 Then TEXT2=Left(ENTRY.c,30)'...'
  468. Else TEXT2=ENTRY.c
  469. If c<10 Then TEXT=TEXT||'   (0'c')   '||TEXT2||LF
  470. Else TEXT=TEXT||'   ('c')   '||TEXT2||LF
  471. End
  472. If LENGTH(ENTRY.COUNT)>30 Then TEXT2=Left(ENTRY.COUNT,30)'...'
  473. Else TEXT2=ENTRY.COUNT
  474. If COUNT<10 Then TEXT=TEXT||'   (0'COUNT')   '||TEXT2
  475. Else TEXT=TEXT||'   ('COUNT')   '||TEXT2
  476. 'requestnumber TITLE "Erase action" PROMPT "'TEXT'"'
  477. If RC>0 Then Return
  478. AREANUM=RESULT
  479. IF AREANUM=0 Then Return
  480. If AREANUM<COUNT Then Do c=AREANUM To COUNT
  481. d=c+1
  482. ENTRY.c=ENTRY.d
  483. End
  484. If AREANUM<=COUNT Then COUNT=COUNT-1
  485. If COUNT=0 Then Return
  486. End
  487. Return
  488. wearedone:
  489. TEMPPASS=PASS
  490. If ~Open('AFMMESSAGE',TEMP,'w') Then Do
  491. 'requestnotify TITLE "Error" PROMPT "FATAL ERROR!'LF'Could not open temporary file ('TEMP')"'
  492. Exit 10
  493. End
  494. If COUNT>0 Then Do c=1 TO COUNT
  495. Call WriteLn('AFMMESSAGE',ENTRY.c)
  496. End
  497. Option=0
  498. 'requestresponse TITLE "Special options" PROMPT "Send a special option to Areafix?" GADGETS "_No|%%_LIST|%%_HELP|%%_QUERY|%%_Other|_Password"'
  499. SpecialOption=RC
  500. Select
  501. When SpecialOption=2 Then Do
  502. Call WriteLn('AFMMESSAGE','%LIST')
  503. Option=1
  504. End
  505. When SpecialOption=3 Then Do
  506. Call WriteLn('AFMMESSAGE','%HELP')
  507. Option=1
  508. End
  509. When SpecialOption=4 Then Do
  510. Call WriteLn('AFMMESSAGE','%QUERY')
  511. Option=1
  512. End
  513. When SpecialOption=5 Then Do
  514. 'requeststring TITLE "Other options" PROMPT "Enter the special command you wish to send" CENTER'
  515. If RC=0 Then Do
  516. Tmp=Strip(RESULT,'L','%')
  517. Tmp=Word(Tmp,1)
  518. Tmp="%"Upper(Tmp)
  519. If Length(Tmp)>1 Then Do
  520. Call WriteLn('AFMMESSAGE',Tmp)
  521. Option=1
  522. End
  523. End
  524. End
  525. When SpecialOption=0 Then Do
  526. 'requeststring TITLE "Password options" PROMPT "Add options to the password'Lf'eg. -L -H" DEFAULT "'PASS'" CENTER'
  527. If RC=0 Then Do
  528. Tmp=RESULT
  529. If (Length(Tmp)>0)&(Length(Tmp)>Length(PASS)) Then Do
  530. PASS=Tmp
  531. Option=1
  532. End
  533. End
  534. End
  535. Otherwise NOP
  536. End
  537. If (COUNT>0)|(Option=1) Then Do
  538. Call Close('AFMMESSAGE')
  539. 'gotoarea' REAL_NAME
  540. 'messages'
  541. 'write TO "'AREAFIX'" TOADDR "'ADDRESS'" SUBJECT "'PASS'" FILE "'TEMP'" REFLOW=OFF NOSIG NOEDIT NOGUI'
  542. If RC>0 Then Do
  543. 'requestnotify PROMPT "FATAL ERROR!'LF'Could not write message to areafix!"'
  544. Exit 10
  545. End
  546. 'lastmessage'
  547. End
  548. Else Call Close('AFMMESSAGE')
  549. Address COMMAND
  550. 'Delete >NIL: 'TEMP
  551. 'Delete >NIL: 'TEMP2
  552. Exit
  553. help:
  554. ARG helpindex
  555. If helpindex<(helpitems+1) Then 'requestnotify TITLE "Help" PROMPT "'helpmsg.helpindex'"'
  556. Else Do
  557. say '+++ Error! Unavailable help for index 'helpindex
  558. Exit 10
  559. End
  560. Return
  561. BREAK_C:
  562. say "+++ Break!"
  563. Exit 10
  564. SYNTAX:
  565. say "+++ Syntax Error ("RC") at line "SIGL" : "errortext(RC)
  566. Exit 10
  567. NOVALUE:
  568. say "+++ No Value Error at line "SIGL
  569. Exit 10
  570. FAILURE:
  571. Say "+++ Failure! Something's fishy at line "SIGL
  572. Exit 10
  573.  
  574.